home *** CD-ROM | disk | FTP | other *** search
/ Dynamic HTML Construction Kit / Dynamic HTML Construction Kit.iso / earthlink / nscomm / java40.jar / java / awt / image / MemoryImageSource.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-03  |  3.7 KB  |  232 lines

  1. package java.awt.image;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Hashtable;
  5. import java.util.Vector;
  6.  
  7. public class MemoryImageSource implements ImageProducer {
  8.    int width;
  9.    int height;
  10.    ColorModel model;
  11.    Object pixels;
  12.    int pixeloffset;
  13.    int pixelscan;
  14.    Hashtable properties;
  15.    Vector theConsumers = new Vector();
  16.    boolean animating;
  17.    boolean fullbuffers;
  18.  
  19.    public MemoryImageSource(int var1, int var2, ColorModel var3, byte[] var4, int var5, int var6) {
  20.       this.initialize(var1, var2, var3, var4, var5, var6, (Hashtable)null);
  21.    }
  22.  
  23.    public MemoryImageSource(int var1, int var2, ColorModel var3, byte[] var4, int var5, int var6, Hashtable var7) {
  24.       this.initialize(var1, var2, var3, var4, var5, var6, var7);
  25.    }
  26.  
  27.    public MemoryImageSource(int var1, int var2, ColorModel var3, int[] var4, int var5, int var6) {
  28.       this.initialize(var1, var2, var3, var4, var5, var6, (Hashtable)null);
  29.    }
  30.  
  31.    public MemoryImageSource(int var1, int var2, ColorModel var3, int[] var4, int var5, int var6, Hashtable var7) {
  32.       this.initialize(var1, var2, var3, var4, var5, var6, var7);
  33.    }
  34.  
  35.    private void initialize(int var1, int var2, ColorModel var3, Object var4, int var5, int var6, Hashtable var7) {
  36.       this.width = var1;
  37.       this.height = var2;
  38.       this.model = var3;
  39.       this.pixels = var4;
  40.       this.pixeloffset = var5;
  41.       this.pixelscan = var6;
  42.       if (var7 == null) {
  43.          var7 = new Hashtable();
  44.       }
  45.  
  46.       this.properties = var7;
  47.    }
  48.  
  49.    public MemoryImageSource(int var1, int var2, int[] var3, int var4, int var5) {
  50.       this.initialize(var1, var2, ColorModel.getRGBdefault(), var3, var4, var5, (Hashtable)null);
  51.    }
  52.  
  53.    public MemoryImageSource(int var1, int var2, int[] var3, int var4, int var5, Hashtable var6) {
  54.       this.initialize(var1, var2, ColorModel.getRGBdefault(), var3, var4, var5, var6);
  55.    }
  56.  
  57.    public synchronized void addConsumer(ImageConsumer var1) {
  58.       if (!this.theConsumers.contains(var1)) {
  59.          this.theConsumers.addElement(var1);
  60.  
  61.          try {
  62.             this.initConsumer(var1);
  63.             this.sendPixels(var1, 0, 0, this.width, this.height);
  64.             if (this.isConsumer(var1)) {
  65.                var1.imageComplete(this.animating ? 2 : 3);
  66.                if (!this.animating && this.isConsumer(var1)) {
  67.                   var1.imageComplete(1);
  68.                   this.removeConsumer(var1);
  69.                   return;
  70.                }
  71.             }
  72.          } catch (Exception var2) {
  73.             if (this.isConsumer(var1)) {
  74.                var1.imageComplete(1);
  75.             }
  76.          }
  77.  
  78.       }
  79.    }
  80.  
  81.    public synchronized boolean isConsumer(ImageConsumer var1) {
  82.       return this.theConsumers.contains(var1);
  83.    }
  84.  
  85.    public synchronized void removeConsumer(ImageConsumer var1) {
  86.       this.theConsumers.removeElement(var1);
  87.    }
  88.  
  89.    public void startProduction(ImageConsumer var1) {
  90.       this.addConsumer(var1);
  91.    }
  92.  
  93.    public void requestTopDownLeftRightResend(ImageConsumer var1) {
  94.    }
  95.  
  96.    public synchronized void setAnimated(boolean var1) {
  97.       this.animating = var1;
  98.       if (!this.animating) {
  99.          Enumeration var2 = this.theConsumers.elements();
  100.  
  101.          while(var2.hasMoreElements()) {
  102.             ImageConsumer var3 = (ImageConsumer)var2.nextElement();
  103.             var3.imageComplete(3);
  104.             if (this.isConsumer(var3)) {
  105.                var3.imageComplete(1);
  106.             }
  107.          }
  108.  
  109.          this.theConsumers.removeAllElements();
  110.       }
  111.  
  112.    }
  113.  
  114.    public synchronized void setFullBufferUpdates(boolean var1) {
  115.       if (this.fullbuffers != var1) {
  116.          this.fullbuffers = var1;
  117.          if (this.animating) {
  118.             Enumeration var2 = this.theConsumers.elements();
  119.  
  120.             while(var2.hasMoreElements()) {
  121.                ImageConsumer var3 = (ImageConsumer)var2.nextElement();
  122.                var3.setHints(var1 ? 6 : 1);
  123.             }
  124.          }
  125.  
  126.       }
  127.    }
  128.  
  129.    public void newPixels() {
  130.       this.newPixels(0, 0, this.width, this.height, true);
  131.    }
  132.  
  133.    public synchronized void newPixels(int var1, int var2, int var3, int var4) {
  134.       this.newPixels(var1, var2, var3, var4, true);
  135.    }
  136.  
  137.    public synchronized void newPixels(int var1, int var2, int var3, int var4, boolean var5) {
  138.       if (this.animating) {
  139.          if (this.fullbuffers) {
  140.             var2 = 0;
  141.             var1 = 0;
  142.             var3 = this.width;
  143.             var4 = this.height;
  144.          } else {
  145.             if (var1 < 0) {
  146.                var3 += var1;
  147.                var1 = 0;
  148.             }
  149.  
  150.             if (var1 + var3 > this.width) {
  151.                var3 = this.width - var1;
  152.             }
  153.  
  154.             if (var2 < 0) {
  155.                var4 += var2;
  156.                var2 = 0;
  157.             }
  158.  
  159.             if (var2 + var4 > this.height) {
  160.                var4 = this.height - var2;
  161.             }
  162.          }
  163.  
  164.          if ((var3 <= 0 || var4 <= 0) && !var5) {
  165.             return;
  166.          }
  167.  
  168.          Enumeration var6 = this.theConsumers.elements();
  169.  
  170.          while(var6.hasMoreElements()) {
  171.             ImageConsumer var7 = (ImageConsumer)var6.nextElement();
  172.             if (var3 > 0 && var4 > 0) {
  173.                this.sendPixels(var7, var1, var2, var3, var4);
  174.             }
  175.  
  176.             if (var5 && this.isConsumer(var7)) {
  177.                var7.imageComplete(2);
  178.             }
  179.          }
  180.       }
  181.  
  182.    }
  183.  
  184.    public synchronized void newPixels(byte[] var1, ColorModel var2, int var3, int var4) {
  185.       this.pixels = var1;
  186.       this.model = var2;
  187.       this.pixeloffset = var3;
  188.       this.pixelscan = var4;
  189.       this.newPixels();
  190.    }
  191.  
  192.    public synchronized void newPixels(int[] var1, ColorModel var2, int var3, int var4) {
  193.       this.pixels = var1;
  194.       this.model = var2;
  195.       this.pixeloffset = var3;
  196.       this.pixelscan = var4;
  197.       this.newPixels();
  198.    }
  199.  
  200.    private void initConsumer(ImageConsumer var1) {
  201.       if (this.isConsumer(var1)) {
  202.          var1.setDimensions(this.width, this.height);
  203.       }
  204.  
  205.       if (this.isConsumer(var1)) {
  206.          var1.setProperties(this.properties);
  207.       }
  208.  
  209.       if (this.isConsumer(var1)) {
  210.          var1.setColorModel(this.model);
  211.       }
  212.  
  213.       if (this.isConsumer(var1)) {
  214.          var1.setHints(this.animating ? (this.fullbuffers ? 6 : 1) : 30);
  215.       }
  216.  
  217.    }
  218.  
  219.    private void sendPixels(ImageConsumer var1, int var2, int var3, int var4, int var5) {
  220.       int var6 = this.pixeloffset + this.pixelscan * var3 + var2;
  221.       if (this.isConsumer(var1)) {
  222.          if (this.pixels instanceof byte[]) {
  223.             var1.setPixels(var2, var3, var4, var5, this.model, (byte[])this.pixels, var6, this.pixelscan);
  224.             return;
  225.          }
  226.  
  227.          var1.setPixels(var2, var3, var4, var5, this.model, (int[])this.pixels, var6, this.pixelscan);
  228.       }
  229.  
  230.    }
  231. }
  232.